Wine 利用 prefix 建立多重環境

Wine 的設定中,可以針對想要執行的程式來安裝所需的函式庫,我們可以想成是幫程式建立一個專屬的 Wine 容器。

如果我們有很多種程式想執行,而且每個程式都有它自己的特殊需求,例如有的遊戲需要裝 DirectX 9,有的遊戲需要裝日文,有的又是正體中文,這時候我們就可以在 Wine 上面建立多重環境,針對不同的遊戲使用專屬的 Wine 容器來執行

本次的系統環境為 Ubuntu 20.04.1

建立 Wine prefix

多重環境的作用方式就是在 Wine 執行時指定 prefix 名稱,每個 prefix 會連結到屬於它的 Wine 設定,也代表一個獨立的容器。

在上一篇文章中有提過,初次執行 Wine 的時候,它會建立一個初始化的資料夾 ~/.wine,這個 ~/.wine 裡面包含 Wine 的環境資料、設定與所需的檔案、函式庫,還有 C:\ 之類的。

從這邊就可以看得出來,只要我們新增幾個類似 ~/.wine 的資料夾,並讓程式執行時使用指定路徑的設定就可以了,建立的方法如下:


新增 wineprefix

export WINEPREFIX=~/.wine-jpn
winecfg
# 執行結果:

wine: created the configuration directory '/home/wade/.wine-jpn'
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0012:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0012:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0012:err:ole:get_local_server_stream Failed: 80004002

執行 winecfg 後,wine 就會建立 ~/.wine-jpn 這個資料夾,並且再一次的進行初始化,新的設定會建在 ~/.wine-jpn 裡面,這時候就可以用它來安裝程式所需的日文環境,並且不會影響到預設的環境

建好之後,我們照平常的方法使用 wine 來執行程式,就會是在 wine-jpn 這個容器下了

切換 Wine prefix

如果要切換回預設的 prefix ~/.wine,只要將 WINEPREFIX 變數給取消即可

unset WINEPREFIX


另外一種作法是我們每次用 wine 執行程式時,都先在指令中指定 prefix,例如:

WINEPREFIX=~/.wine wine XXX.exe

# 使用預設環境執行
WINEPREFIX=~/.wine-jpn wine XXX.exe

# 使用新建的日文環境執行

建立 32 位元的 prefix

wine 的預設環境是 64 bit,不過還是有很多程式或一些老軟體只能在 32 bit 的環境下執行,這時候就要建立 32 位元的 prefix 來執行它們

WINEARCH=win32 WINEPREFIX=~/.wine_32bit winecfg 

# wine32:32 位元
# wine64:64 位元

上面的指令會建立 prefix,路徑為:~/.wine_32bit

建好之後,執行程式時只要指定 prefix 就可以,WINEARCH 這個變數可以不用再指定,因為 ~/.wine_32bit 本身就是 32 位元的架構了

心得

使用 wine prefix 可以保持環境的乾淨,也可以讓一些比較麻煩的程式用它專屬的容器,而不會影響到其它程式的執行,算是個人非常推薦的做法。

同樣地,wine prefix 一樣也可以用 Winetricks 來做,而且更加容易(雖然原本的方式也很簡單了),下面一篇文章就會來介紹 Winetricks 這個好用的 Wine 輔助工具。

Wine 系列文章:

Linux 使用 Wine 執行 Windows 程式

Winetricks – 簡單易用的 Wine 輔助工具

My Personal Wine Setting


參考資料:

Wineprefixes FAQ in WineHQ

wade Written by:

本站站長